/*
 *  Copyright (c) 2015, Parse, LLC. All rights reserved.
 *
 *  You are hereby granted a non-exclusive, worldwide, royalty-free license to
 *  use, copy, modify, and distribute this software in source code or binary
 *  form for use in connection with the web services and APIs provided by Parse.
 *
 *  As with any software that integrates with the Parse platform, your use of
 *  this software is subject to the Parse Terms of Service
 *  [https://www.parse.com/about/terms]. This copyright notice shall be
 *  included in all copies or substantial portions of the software.
 *
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 *  IN THE SOFTWARE.
 *
 */

'use strict';

if (typeof Parse === 'undefined') {
  if (typeof require === 'function') {
    try {
      module.exports = require('parse');
    } catch (e) {
      throw new Error('Failed to require Parse module. You need the Parse SDK' +
        ' installed to use Parse + React');
    }
  } else {
    throw new Error('Cannot initialize Parse + React: Parse is not defined.');
  }
} else {
  if (Parse.CoreManager) {
    let version = Parse.CoreManager.get('VERSION') || '';
    if (version.substr(0, 2) === 'js') {
      version = version.substr(2); // Remove 'js'
    }
    let minor = version.substr(0, 3);
    if (minor > '1.6') {
      throw new Error('Parse + React is only compatible with Parse 1.6.*');
    }
  }
  module.exports = Parse;
}
